package com.ranjiaqi.string;

/**
 * @ClassName String02
 * @Description TODO
 * @Author hp
 * @Date 2021/6/19 9:28
 * @Version 1.0
 **/
public class String02 {
    public static void main(String[] args) {
        function();
    }

    /**
     * 字符串定义的内存效果
     */
    public static void function() {
        //定义方式在内存中
        String str = "abc";
    }
    public static void function2() {
        //定义方式在内存中
        String str = "abc";
        String str2 = new String("abc");
    }
    public static void function3() {
        //定义方式在内存中
        String str = "abc";
        String str2 = new String("abc");
        System.out.println(str==str2);//引用类型==比较对象内存地址

        String s1 ="a";//内存中存储的数组a
        String s2 ="a";//内存中存储的数组a 一个字符串对象，内容是相同的，可以共享
        System.out.println(s1==s2);//引用类ing==比较内存地址

        String s3 ="hello";
        String s4 ="world";
        String s5 = "hellowor";
        System.out.println((s3+s4)==s5);//变量计算，不确定结果，运行后采用新空间

        System.out.println(("hello"+"world")==s5);//常量计算，编译时期结果已经确定


        String s6="a"+"b"+"c"+"d";   //创建了几个对象，1个，因为常量已经确定。
        System.out.println(s6);
    }
}
